package main

import (
	_ "test"
)
//
//var x int = 10
//var y string= "hello"

func main(){
	//fmt.Print("Hello World")
	//test.Hello()
	//fmt.Print(x)
	//fmt.Print(y)

	/*
	1.定义数组的两种方法
	 */
	//var z[10] int
	//z[0] = 1
	//z[9] = 10
	//fmt.Print(z)
	//fmt.Println()
	//
	//zz := [10]int8{1,2,3,4,5}
	//fmt.Print(zz)
	//fmt.Print(len(zz))

	/*
	2.定义动态数组的两种方法
	 */
	//var slice []int
	//fmt.Println(slice)
	//
	//y := make([]int, 3, 5)
	//y = append( y, 3, 4, 5, 6, 7, 8, 9, 10)
	//
	//fmt.Print(y, len(y), cap(y))


	/*
	3.定义map的方法 make相当于java中的new
	 */
	//var student map[string]float32
	//student = make(map[string]float32)
	//student["zhangsan"] = 16.66
	//fmt.Println(student)

	//student := make(map[string]float32)
	//student["lisi"] = 16.66
	//fmt.Println(student)

	/*
	4.1 控制语句-循环语句
	 */
	// var x int
	//sum := 0
	//for x = 1; x < 100; x++ {
	//	sum = sum + x
	//}
	//
	//fmt.Println(sum)

	/*
	4.2 控制语句-range
	 */
	 //x := make(map[string]int)
	 //x["zhangsan"] = 100
	 //x["lisi"] = 99
	 //x["wangwu"] = 98

	// x := "ahaha"
	//
	//for i, v :=range x{  //v:ASCII码
	//	fmt.Println(i, v)
	//}

	/*
	5.函数上
	 */
	//a := 1
	//add(&a)
	//fmt.Println(a)

	/*
	5.1 匿名函数
	 */
	 //f := func(x, y int) int{
	 //	return x + y
	 //}
	 //
	 //fmt.Println(f(2, 3))

	 /*
	 5.2 defer 相当于压栈
	  */
	  //defer func(){
	  //	fmt.Println("Afer defer 1")
	  //}()
	  //
	  //f := func() {
	  //	fmt.Println("After defer 2")
	  //}
	  //defer f()
	  //
	  //fmt.Println("Befer defer")

	  /*
	  5.3 type 函数可以作为值或者类型
	   */
	//type sum func(x, y int)int
	//var f sum = func(x ,y int) int{
	//	return x + y
	//}
	//
	//fmt.Println(f(1, 2))


}

func add(a *int) *int{
	*a = *a + 1
	return  a
}